home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-07-03 | 858 b | 33 lines | [TEXT/R*ch] |
- (* ListPair *)
-
- fun zip (xs, ys) =
- let fun h (x::xr) (y::yr) res = h xr yr ((x, y) :: res)
- | h _ _ res = List.rev res
- in h xs ys [] end;
-
- fun unzip xys =
- let fun h ([], xs, ys) = (List.rev xs, List.rev ys)
- | h ((x, y)::xyr, xs, ys) = h (xyr, x::xs, y::ys)
- in h (xys, [], []) end;
-
- fun map f (xs, ys) =
- let fun h (x::xr) (y::yr) res = h xr yr (f(x, y) :: res)
- | h _ _ res = List.rev res
- in h xs ys [] end;
-
- fun app f (xs, ys) =
- let fun h (x::xr) (y::yr) = (f (x, y); h xr yr)
- | h _ _ = ()
- in h xs ys end;
-
- fun all p (xs, ys) =
- let fun h (x::xr) (y::yr) = p(x, y) andalso h xr yr
- | h _ _ = true
- in h xs ys end;
-
- fun exists p (xs, ys) =
- let fun h (x::xr) (y::yr) = p(x, y) orelse h xr yr
- | h _ _ = false
- in h xs ys end;
-
-